package dRegAut;

import java.io.IOException;

import dRegAut.opg2.Dotter;
import dRegAut.opg2.NFA;
import dRegAut.opg2.O2_3;
import dRegAut.opg2.O2_4;
import dRegAut.opg2.O2_6;

/**
 * @author Michael B. Mogensen
 */
public class Main {
    // Lad M være NFA'en i [Martin, Fig. 3.36 (c), s.124].
    // 1. Oversæt M til en ny NFA M1 ved hjælp af Λ-elimineringsalgoritmen.
    // 2. Oversæt M1 til en FA M2 ved hjælp af determiniseringsalgoritmen.
    public static void main(String[] args) throws IOException {
        NFA setupM = new O2_3().setupM();

        new Dotter().createToDotFile(setupM.toDot(), "O2_3M.dot");
        new Dotter().createToDotFile(setupM.removeLambdas().toDot(), "O2_3M1.dot");
        new Dotter().createToDotFile(setupM.removeLambdas().determinize().toDot(), "O2_3M2.dot");
        new Dotter().createToDotFile(new O2_6().createFA().minimize().toDot(), "O2_6.dot");

        new Dotter().createToDotFile(new O2_4().createFA().toDot(), "O2_4.dot");
    }
}
